package com.dazhewan.utils;

import com.dazhewan.project.ocr.strategy.IOrcStrategyI;
import com.dazhewan.project.ocr.strategy.TesseractOcrStrategy;

import java.awt.image.BufferedImage;
import java.io.IOException;

/**
 * @author zhengxuexue
 * @date 2023/12/15 16:34
 * @description ocr相关的工具类
 */
public class OcrUtil {
    /**
     * 使用TesseractOcrStrategy策略识别的默认方法
     * 根据图片流和要是别的内容编号（语言编号）识别出文件中的内容
     * @param bufferedImage 要识别的文件流
     * @param operaCode 识别操作的编号
     * @return 识别出的内容
     * @author zhengdanyu
     * @date 2023/12/15 16:35
     */
    public static String doOcrTesscat(BufferedImage bufferedImage,int operaCode) throws IOException {
        final TesseractOcrStrategy tesseractOcrStrategy = new TesseractOcrStrategy(operaCode);
        return doOcr(bufferedImage,tesseractOcrStrategy);
    }

    /**
     * 根据传入的文件流和文件ocr识别策略识别内容的方法
     * @param bufferedImage 要识别的文件流
     * @param strategy ocr的识别策略
     * @return 识别出的内容
     * @author zhengdanyu
     * @date 2023/12/15 16:37
     */
    public static String doOcr(BufferedImage bufferedImage, IOrcStrategyI strategy) throws IOException {
        String s = strategy.identifyWordsByImage(bufferedImage);
        s=s.replaceAll(" |\\n","");
       return s;
    }
}
